package cn.com.db.service;


import cn.com.Enum.StoreStatus;
import cn.com.db.model.Store;
import cn.com.util.TimeUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.sql.Time;
import java.time.LocalTime;
import java.util.List;

@Service
public class StoreService extends BaseService {

    public void createStore(Store store){
        storeDao.createStore(store);
    }

    public Store getStoreById(String id){
        if (StringUtils.isBlank(id)){
            return null;
        }
        return storeDao.getStoreById(id);
    }

    public Boolean isExist(String id){
        return getStoreById(id)!=null;
    }

    public Boolean isAlive(String id){
        Store store=getStoreById(id);
        if (store==null){
            return false;
        }
        if (Time.valueOf(LocalTime.now()).before(store.getStart())||
                Time.valueOf(LocalTime.now()).after(store.getEnd())){
            return false;
        }
        return store.getStatus().equals(StoreStatus.RUNNING.getStatus());
    }

    public List<Store> searchStore(Store store,Integer page,Integer count){
        return storeDao.searchStore(store,StoreStatus.RUNNING.getStatus(),(page-1)*count,count);
    }

    public Integer countStore(Store store){
        return storeDao.countStore(store,StoreStatus.RUNNING.getStatus());
    }

    public List<Store> getStore(Store store,Integer page,Integer count){
        return storeDao.getStore(store,(page-1)*count,count);
    }

    public Integer countGetStore(Store store){
        return storeDao.countGetStore(store);
    }

    public List<Store> batchGetSotre(List<String> idList){
        return storeDao.batchGetStore(idList);
    }
    @Transactional
    public void deleteStore(String id){
        storeDao.delete(id);
    }

    @Transactional
    public void updateStore(Store store){
        storeDao.update(store);
    }

    @Transactional
    public void updateStoreStatus(String id,Integer status){
        storeDao.updateStatus(id,status);
    }
    /**
     * 回显时候加上8小时
     * @param store
     */
	public Store modifyEchoTime(Store store) {
    	store.setStart(new Time(store.getStart().getTime()+28800000));
        store.setEnd(new Time(store.getEnd().getTime()+28800000));
		return store;
	}
	/**
     * 回显时候加上8小时
     * @param store
     */
	public List<Store> modifyEchoTime(List<Store> stores) {
		for (Store store : stores) {
			store = modifyEchoTime(store);
		}
		return stores;
	}

	public List<Store> getStoreByIdList(List<String> storesIdList) {
		return storeDao.getgetStoreByIdList(storesIdList);
	}

}
